﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Configuration;
using Microsoft.ApplicationBlocks.Data;
using Entities;


namespace DAL
{
    public class PlanDeServicioDAL
    {
        static string strCadenaConexion = System.Configuration.ConfigurationManager.ConnectionStrings["ConexionBaseDesarrollo"].ConnectionString;

        public static long Nuevo(PlanServicio parPlanDeServicio)
        {
            long longRetorno = 0;
            try
            {
                long.Parse(SqlHelper.ExecuteScalar(
                strCadenaConexion,
                "spPlanDeServicioNuevo",
                parPlanDeServicio.NombrePlan,
                parPlanDeServicio.Descripcion,
                parPlanDeServicio.PrecioAnual,
                parPlanDeServicio.PorcentajeIncrementoMensual,
                parPlanDeServicio.ProcentajeIncrementoTrimestral
                ).ToString());
                return longRetorno;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void Modificar(PlanServicio parPlanDeServicio)
        {
            try
            {
                SqlHelper.ExecuteNonQuery
                (strCadenaConexion,
                "spPlanDeServicioModificar",
                parPlanDeServicio.IDPlanServicio,
                parPlanDeServicio.NombrePlan,
                parPlanDeServicio.Descripcion,
                parPlanDeServicio.PrecioAnual,
                parPlanDeServicio.PorcentajeIncrementoMensual,
                parPlanDeServicio.ProcentajeIncrementoTrimestral);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static void Eliminar(long parIDPlanDeServicio)
        {
            try
            {
                SqlHelper.ExecuteNonQuery
                (strCadenaConexion, "spPlanDeServicioEliminar", parIDPlanDeServicio);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static PlanServicio ObtenerUno(long parIDPlanServicio)
        {
            try
            {
                PlanServicio oPlanDeServicio = new PlanServicio();
                DataTable dt = new DataTable();
                dt = SqlHelper.ExecuteDataset(strCadenaConexion, "spPlanDeServicioObtenerUno", parIDPlanServicio).Tables[0];
                if (dt.Rows.Count > 0)
                {
                    oPlanDeServicio.IDPlanServicio = long.Parse(dt.Rows[0]["IDPlanServicio"].ToString());
                    oPlanDeServicio.NombrePlan = dt.Rows[0]["NombrePlan"].ToString();
                    oPlanDeServicio.Descripcion = dt.Rows[0]["Descripcion"].ToString();
                    oPlanDeServicio.PrecioAnual = decimal.Parse(dt.Rows[0]["PrecioAnual"].ToString());
                    oPlanDeServicio.PorcentajeIncrementoMensual = decimal.Parse(dt.Rows[0]["PorcentajeIncrementoMensual"].ToString());
                    oPlanDeServicio.ProcentajeIncrementoTrimestral = decimal.Parse(dt.Rows[0]["ProcentajeIncrementoTrimestral"].ToString());
                }
                return oPlanDeServicio;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static List<PlanServicio> ObtenerTodos()
        {
            try
            {
                List<PlanServicio> ListaPlanDeServicios = new List<PlanServicio>();
                DataTable dt = new DataTable();
                dt = SqlHelper.ExecuteDataset(strCadenaConexion, CommandType.StoredProcedure, "spPlanDeServicioObtenerTodos").Tables[0];
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        PlanServicio oPlanDeServicio = new PlanServicio();
                        oPlanDeServicio.IDPlanServicio = long.Parse(dr["IDPlanServicio"].ToString());
                        oPlanDeServicio.NombrePlan = dr["NombrePlan"].ToString();
                        oPlanDeServicio.Descripcion = dr["Descripcion"].ToString();
                        oPlanDeServicio.PrecioAnual = decimal.Parse(dr["PrecioAnual"].ToString());
                        oPlanDeServicio.PorcentajeIncrementoMensual = decimal.Parse(dr["PorcentajeIncrementoMensual"].ToString());
                        oPlanDeServicio.ProcentajeIncrementoTrimestral = decimal.Parse(dr["ProcentajeIncrementoTrimestral"].ToString());
                        ListaPlanDeServicios.Add(oPlanDeServicio);
                    }
                }
                return ListaPlanDeServicios;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
